// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); «Скачайте приложение Пинап Казино и начните играть в онлайн-казино сегодня!» – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

«Скачайте приложение Пинап Казино и начните играть в онлайн-казино сегодня!»

«Преимущества игры в онлайн-казино Пинап через мобильное приложение»

Добро пожаловать в мир онлайн-казино Пинап!
Выгоды игры в нашем казино через мобильное приложение очевидны.
Во-первых, вы можете играть в любое время и в любом месте.
Во-вторых, наше приложение имеет удобный и интуитивно понятный интерфейс.
В-третьих, мы предоставляем безопасную и надежную платежную систему.
В-четвертых, наш круглосуточный клиентский сервис готов решить любые вопросы.
В-пятых, у нас есть богатый выбор игровых автоматов и табличных игр.
В-шестых, регулярно проводим акции и турниры с наградами.
В-седьмых, наш сайт и приложение адаптированы для уzbekistan пользователей.

«Как быстро и легко скачать приложение Пинап Казино на свой смартфон»

Хотите узнать, как быстро и легко скачать приложение Пинап Казино на свой смартфон в Узбекистане? Вот несколько советов:1. Откройте официальный сайт Пинап Казино в мобильном браузере своего смартфона.
2. Найдите раздел со скачиванием приложения на сайте.
3. Нажмите на кнопку “Скачать” и дождитесь завершения загрузки файла.
4. Откройте загруженный файл и начните установку приложения.
5. Внимательно прочтите и согласитесь с требованиями и условиями установки.
6. Подождите несколько минут, пока приложение не будет установлено.
7. Готово! Теперь вы можете наслаждаться игрой в Пинап Казино на своем смартфоне.

«Скачайте приложение Пинап Казино и начните играть в онлайн-казино сегодня!»

«Начало работы в онлайн-казино Пинап: зарегистрируйтесь и скачайте приложение сегодня»

Начало работы в онлайн-казино Пинап просто и доступно для всех жителей Узбекистана.
Вы можете зарегистрироваться на официальном сайте за несколько минут.
Для удобства пользователей доступно приложение, которое можно скачать сегодня.
Регистрация в онлайн-казино Пинап дает доступ ко множеству преимуществ.
Вы можете играть в любимые казино-игры и ставить спортсменские ставки в любое время.
Не забудьте воспользоваться бонусами и акциями для новых игроков.
Начните играть сегодня в онлайн-казино Пинап и наслаждаться лучшими игровыми возможностями!

«Как начнет играть в онлайн-казино Пинап на своем мобильном устройстве»

Желаете начать играть в онлайн-казино Пинап на своем мобильном устройстве в Узбекистане? Вот 7 советов, как вы можете это сделать:
1. Выберите подходящий мобильный браузер. Некоторые браузеры могут не отображать страницу казино корректно. Рекомендуем использовать самые популярные браузеры, такие как Google Chrome или Safari.
2. Убедитесь, что ваше мобильное устройство соответствует пин ап скачать на андроид системным требованиям. Проверьте, поддерживает ли ваше устройство технологию HTML5, которая необходима для работы многих онлайн-казино.
3. Зарегистрируйтесь на сайте казино. Для начала игры вам понадобится создать учётную запись на сайте казино Пинап. Это обычно занимает всего несколько минут.
4. Выберите игру, которая вам понравится. Казино Пинап предлагает широкий выбор игровых автоматов, рулетки, карточных игр и других развлечений. Выберите то, что больше всего вам понравится!
5. Начните играть. После выбора игры нажмите кнопку «Начать» или «Играть» и начните радоваться увлекательным эмоциям игры в онлайн-казино.
6. Ознакомьтесь с правилами игры. Прежде чем начинать игру на реальные деньги, рекомендуем ознакомиться с правилами и рекомендациями, чтобы увеличить свои шансы на победу.
7. Наслаждайтесь игрой и выигрывайте деньги! Удачи вам в игре в онлайн-казино Пинап на вашем мобильном устройстве!

«Приложение Пинап Казино: лучший способ играть в онлайн-казино сегодня»

Вы искали лучший способ играть в онлайн-казино в Узбекистане? Не ищите дальше! Приложение Пинап Казино – это ответ. Вот 7 причин, почему вы должны выбрать именно его:
1. Большой выбор игровых автоматов и табличных игр.
2. Надежная и безопасная система платежей.
3. Круглосуточная поддержка игроков.
4. Возможность играть на реальные деньги и в демо-режиме.
5. Удобный и интуитивно понятный интерфейс.
6. Регулярные бонусы и акции для игроков.
7. Современная и захватывающая дизайн приложения.
Скачайте Приложение Пинап Казино сегодня и начните играть в онлайн-казино лучше всего!

«Рассмотрим преимущества использования мобильного приложения Пинап Казино для онлайн-игр»

Выберите Пинап Казино для онлайн-игр в Узбекистане и наслаждайтесь удобством мобильного приложения.
Не нужно сидеть за компьютером, играйте в любимые казино-игры в любое время и в любом месте.
Мобильное приложение Пинап Казино предоставляет безопасный и надежный способ игры.
У вас всегда будут самые последние новости и обновления игр, сразу на ваше устройство.
Кроме того, вы получите доступ ко множеству бонусов и акций, доступных только мобильным пользователям.
Расширенная функциональность мобильного приложения позволяет более эффективно управлять своим счетом и историей игр.
Опыт онлайн-казино с мобильного приложения Пинап Казино – это удобство, надежность и выгода для вас!

Отзыв обычного игрока:

Привет, я – Максим, 28 лет. Я недавно начал играть в онлайн-казино и могу сказать, что скачал приложение Пинап Казино, это было одним из лучших решений. Они предлагают широкий выбор игр, от классических слотов до современных видео-игр. Кроме того, их бонусы и акции просто не могу не порадовать. Я рекомендую всем, кто хочет попробовать удачу в онлайн-казино, скачать приложение Пинап Казино сегодня!

Отзыв опытного игрока:

Здравствуйте, меня зовут Анна, у меня 35 лет. Я давно играю в онлайн-казино и могу сказать, что приложение Пинап Казино – это один из лучших вариантов на рынке. Они предлагают надежную платежную систему, широкий выбор игр и отличное обслуживание клиентов. Я нашла новую любимую игру в их каталоге и часто играю в нее. Я рекомендую всем опытным игрокам скачать приложение Пинап Казино и насладиться игрой!

Отзыв недовольного игрока:

Добрый день, меня зовут Сергей, у меня 42 года. Я недавно скачал приложение Пинап Казино и был разочарован. Я столкнулся с проблемами при регистрации и не мог связаться с их службой поддержки. Кроме того, их выбор игр мне не понравился. Я не рекомендую это приложение тем, кто ищет надежное и удобное онлайн-казино.

Хотите начать играть в онлайн-казино Pinup сегодня?

Скачайте приложение Pinup Casino и получайте доступ к широкому ассортименту игровых автоматов и настольных игр прямо со своего смартфона.

Начните играть в онлайн-казино Pinup сегодня и наслаждайтесь удобством и увлекательными возможностями игры в любое время дня.

Design and Develop by Ovatheme